package com.tabnet.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.tabnet.beans.personnes.Gestionnaire;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOFactory;
import com.tabnet.dao.DAOGestionnaire;
import com.tabnet.dao.DAOUtilitaire;

public class GestionnaireDAOImpl implements DAOGestionnaire {
	private static final String SQL_MDP			= "SELECT * FROM Gestionnaire WHERE MailG = ? AND MDP = MD5(?)";
	
    private DAOFactory daoFactory;

    public GestionnaireDAOImpl( DAOFactory daoFactory ) {
        this.daoFactory = daoFactory;
    }
    
	@Override
	public Gestionnaire trouverGest(String email, String motDePasse) throws DAOException {
		Connection connexion = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Gestionnaire gest = new Gestionnaire();

        try {
            /* Récupération d'une connexion depuis la Factory */
            connexion = daoFactory.getConnection();
            /*
             * Préparation de la requête avec les objets passés en arguments et exécution.
             */
            preparedStatement =  DAOUtilitaire.initialisationRequetePreparee( connexion, SQL_MDP, false, email, motDePasse);
            resultSet = preparedStatement.executeQuery();
            /* Parcours de la ligne de données retournée dans le ResultSet */
            if ( resultSet.next() ) {
            	gest.set_Mail(resultSet.getString("MailG"));
            	gest.set_Mdp(resultSet.getString("MDP"));
            }
            else{
            	gest = null;
            }
        } catch ( SQLException e ) {
            throw new DAOException( e );
        } finally {
            DAOUtilitaire.fermeturesSilencieuses( resultSet, preparedStatement, connexion );
        }
        
        return gest;
	}
}
